iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
Software Development

30天學習.Net MAUI系列 第 21

21關於.NET MAUI Navigation (二)

  • 分享至 

  • xImage
  •  

今天繼續介紹Navigation

Navigation中的路由分為了絕對和相對的路由

絕對路由
ex. await Shell.Current.GoToAsync("//animals/monkeys");

導覽至monkeys的頁面,並在ShellContent物件上已經定義路由。 表示monkeys路由的 ShellContent為FlyoutItem子class,其路由是animals

相對路由
ex.await Shell.Current.GoToAsync("monkeydetails");

系統會搜尋階層中的monkeyDetails路由,直到找到相符的頁面為止

傳遞資料

前面我們提到在我們的TodoViewModel中
https://ithelp.ithome.com.tw/upload/images/20221006/20108931NQcaXQPwdc.png

除了可以用dictionary來對我們註冊過的AddTodoPage路由傳遞參數

            var navParam = new Dictionary<string, object>();
            navParam.Add("TodoItem", todoItemModel);

            await AppShell.Current.GoToAsync(nameof(AddTodoPage), navParam);

當我們要傳遞及處理多個資料時我們業能夠使用& 連接多個字串型查詢參數,來傳遞多個字串型查詢參數
ex.

async void OnCollectionViewSelectionChanged(object sender, SelectionChangedEventArgs e)
{
    string elephantName = (e.CurrentSelection.FirstOrDefault() as Animal).Name;
    string elephantLocation = (e.CurrentSelection.FirstOrDefault() as Animal).Location;
	// 巡覽至elephantdetails路由,並傳遞elephantName和elephantLocation 作為查詢參數
    await Shell.Current.GoToAsync($"elephantdetails?name={elephantName}&location={elephantLocation}");
}

而要接收多個資料項目,我們能透過字串行查詢參數的裝飾符QueryPropertyAttribute

就如同我們的Todo\ViewModels\AddUpdateTodoViewModel.cs裡定義了我們要查詢的參數TodoItem
https://ithelp.ithome.com.tw/upload/images/20221006/20108931Ly8UBrcKI3.png

並且透過加入Dictionary的方式將我們要用的傳遞參數給傳遞過去

            var navParam = new Dictionary<string, object>();
            navParam.Add("TodoItem", todoItemModel);

            await AppShell.Current.GoToAsync(nameof(AddTodoPage), navParam);

上一篇
關於.NET MAUI Navigation (一)
下一篇
22.關於.NET MAUI Shell (一)
系列文
30天學習.Net MAUI30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言